import java.util.Arrays;

public class MyArraylist {

        private int[] array;
        public final int DEFAULT_SIZE=10;
        public int usesize;
        // 默认构造方法
        MyArraylist()
        {
            this.array=new int[DEFAULT_SIZE];
        }
    // 打印顺序表，注意：该方法并不是顺序表中的方法，为了方便看测试结果给出的
    public void display()
    {
        for(int i=0;i<usesize;i++)
        {
            System.out.print(array[i]+" ");
        }
        System.out.println();
    }

        // 新增元素,默认在数组最后新增
        public void add(int data)
        {
            if(this.iffull())
            {
                resve();
            }
          array[usesize]=data;
            usesize++;
        }
        //判断是否满了
        public boolean iffull()
        {
            if(this.usesize==this.array.length)
            {
                return true;
            }
            return false;
        }
        //扩容
        public int[] resve()
        {
            this.array= Arrays.copyOf(this.array,2*this.array.length);
            return this.array;
        }
        // 在 pos 位置新增元素
        public void add(int pos, int data)
        {
            checkindex(pos);
            if(iffull())
            {
                resve();
            }
            for(int i=usesize-1;i>=pos;i--)
            {
                this.array[i+1]=this.array[i];
            }
            this.array[pos]=data;
            usesize++;
        }
        public void checkindex(int pos)
        {
            if(pos<0||pos>usesize)
            {
                throw new IndexOutOfException("检查异常");
            }
        }
        // 判定是否包含某个元素
        public boolean contains(int toFind)
        {
            for(int i=0;i<usesize;i++)
            {
                if(this.array[i]==toFind)
                    return true;
            }
            return false;
        }
        // 查找某个元素对应的位置
        public int indexOf(int toFind)
        {
            for(int i=0;i<usesize;i++)
            {
                if(this.array[i]==toFind)
                    return i;
            }
            return -1;
        }
        // 获取 pos 位置的元素
        public int get(int pos)
        {
            checkindex(pos);
            return array[pos];
        }
        // 给 pos 位置的元素设为 value
        public void set(int pos, int value)
        {
            checkindex(pos);
            this.array[pos]=value;

        }
        //删除第一次出现的关键字key
        public void remove(int toRemove)
        {
            int index=indexOf(toRemove);
            if(index==-1)
            {
                System.out.println("没有这个数据！！！");
                //return false;
            }
            for(int i=index;i<usesize;i++)
            {
                    array[i]=array[i+1];
            }
            usesize--;
            array[usesize]=0;
            //return true;
        }
        // 获取顺序表长度
        public int size()
        {
            return this.usesize;
        }
        // 清空顺序表
        public void clear()
        {
            for(int i=0;i<usesize;i++)
            {
                this.array[i]=0;
            }
            usesize=0;
        }

}
